package com.yuandian.customer.perception.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.customer_perception.po.SystemOverviewParams;
import com.yuandian.api.customer_perception.vo.*;
import com.yuandian.po.MultipleTableInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 全系统监控总览mapper
 * <p>
 *
 * @author lijunhang
 * @date 2021/8/11
 * @since 1.0.0
 */
public interface MonitorOverviewMapper {

    /**
     * 全系统监控总览-查询系统或者业务不健康数
     * @param params 请求参数
     * @param tableInfos
     * @return 系统或者业务不健康数
     */
    int findUnHealthCount(@Param("params") SystemOverviewParams params,
                          @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 全系统监控总览-查询系统或者业务总数
     * @param params 请求参数
     * @param tableInfos
     * @return 系统或者业务总数
     */
    int findAllCount(@Param("params") SystemOverviewParams params,
                     @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 全系统监控总览-全系统健康度和访问量top5
     * @param params 请求参数
     * @param tableInfos
     * @return 全系统健康度和访问量top5数据
     */
    List<SystemHealthAndVisistTop5Vo> systemHealthAndVisistTop5(@Param("params") SystemOverviewParams params,
																@Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 全系统监控总览-全业务健康度和访问量top5
     * @param params 请求参数
     * @param tableInfos
     * @return 全业务健康度和访问量top5数据
     */
    List<BusinessHealthAndVisistTop5Vo> businessHealthAndVisistTop5(@Param("params") SystemOverviewParams params,
																	@Param("tableInfos") List<MultipleTableInfo> tableInfos);


    /**
     * 全系统总览列表-分页
     *
     * @param page
     * @param params 请求参数
     * @return 全系统总览列表数据
     */
    List<SystemOverviewListVo> systemOverviewList(@Param("params") SystemOverviewParams page,
												  @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 全系统监控总览-根据系统id查询出已确认的业务的数量
     * @param systemId 系统id
     * @return 已确认的业务的数量
     */
    int queryBusiCountBySystemId(String systemId);

    /**
     * 全系统监控总览-查询所有系统已确认的业务的数量
     * @return 已确认的业务的数量
     */
    List<SystemOverviewListVo> queryBusiCount();

    /**
     * 全系统监控总览-全系统总览列表-不分页
     *
     * @param page
     * @param params 请求参数
     * @param tableInfos
     * @return 全系统总览列表数据
     */
    List<SystemOverviewListVo> systemOverviewList(Page page,
                                                  @Param("params") SystemOverviewParams params,
                                                  @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 全系统监控总览-业务总览列表
     * @param params 请求参数
     * @param tableInfos
     * @return 业务总览列表数据
     */
    List<BusinessOverviewListVo> businessOverviewList(Page<BusinessOverviewListVo> page,
                                                      @Param("params") SystemOverviewParams params,
                                                      @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 全系统监控总览-业务总览列表-不分页
     * @param params 请求参数
     * @param tableInfos
     * @return 业务总览列表数据
     */
    List<BusinessOverviewListVo> businessOverviewList(@Param("params") SystemOverviewParams params,
													  @Param("tableInfos") List<MultipleTableInfo> tableInfos);


    /**
     * 全系统监控总览-查询地市id和名称
     * @param params 请求参数
     * @return 查询地市id和名称
     */
    List<SearchOptionVo> queryAreaCodeAndName(@Param("params") SystemOverviewParams params);

}
